版本-v1128

发版说明:api更新时,在这个文档末尾加上release

版本-v1204

发版说明:
1、废弃client.initInnerCallBack中的videoCloseCB回调,将其精确通知到对应的回调事件中(增加closeVideoSuccess回调事件),涉及到的更改如下,示例代码已添加

  • client.videoPickUp
  • client.videoInviteAgent
  • client.callbackToVisitor
  • client.videoInviteCurrentVisitor
  • client.videoInviteVisitor

2、统一SDK报错的提示格式,从返回的数据的error.msg拿错误提示信息

error: function(data) {
  if(data.error) {
    var msg = data.error.msg || ''
  }
  console.log(msg, '错误信息')
}

版本-v1211

发版说明:
1、增加是否在屏幕共享的API - isShareState
2、增加是否在三方视频中的API - isMultipleVideo

版本-v1216

发版说明:
1、client.initInnerCallBack 中添加了 visitorStreamOffline 事件,当会议中有成员视频流停止超过3s 则推送此事件

版本-v1220

发版说明:
1、增加client.videoPickUp中的visitorDisconnect回调,提示音视频接通后访客端引起的挂断,详见示例代码
2、增加client.multipleVideoPickUp中的kefuCloseVideoSuccess回调,提示音视频接通后坐席或访客端挂断导致的会议结束(非被邀请的三方坐席)

1、初始化举例、参数及挂载回调说明

1.1、new IMClient 初始化说明

  • baseWsUrl 必填 基础连接的ws,wss://lccp-ex.easemob.com:1040为wss连接,ws://127.0.0.1:1040为ws连接
  • ssoTo 必填 客服的主地址
  • videoBarVisible 是否开启客服内部的音视频控制条
  • success 初始化成功的回调
  • error 初始化出错的回调
  • ssoReady 单点登录页面准备就绪
  • kefuReady 进入客服页面了
  • kefuWSClose 客服内部的ws通道出错

1.2、client.initInnerCallBack方法说明

  • chatCloseCB ==客服内部IM会话关闭的回调通知==
  • videoCloseCB ==客服内部音视频关闭的回调通知==
  • visitorStreamOffline ==会议成员视频流离线超过3s==

1.3 初始化示例

window.onload = function() {
    var client;
    function initIMClient(){
        var HXPlugin = window.HXPlugin = 0;
        var wssrc = location.protocol == "https:" ? "wss://lccp-ex.easemob.com:1040" : "ws://127.0.0.1:1040";

        client = new IMClient({
            baseWsUrl: wssrc,
            videoBarVisible: true,
            ssoTo: "https://kefu.wecvideotest.pingan.com.cn/mo/agent/webapp/chat",
            success: function(data){
                console.log("成功连接", data);
                HXPlugin = 0;
                this.linkStatus = true;
            },
            error: function(error){
                this.linkStatus = false;
                this.ready = false;
                console.log(error);
                HXPlugin = 0;
            },
            ssoReady: function(){
                console.log("进入单点登录页面了,可以登录了 123+");
            },
            kefuReady: function(){
                console.log("进入客服系统了,可以退出了 123-");
            },
            kefuWSClose: function(){
                console.log("kefu系统的ws断开");
            }
        });

        client.linkStatus = false;
        client.ready = false;
        client.detactExeReadyInterval = null;
        /**
         * 接收exe内部操作的回调
         */
        client.initInnerCallBack({
            chatCloseCB: function(data){
                console.log(data);
            },
            visitorStreamOffline: function(data){
              console.log(data)
            }
        });
        return client;
    }
    window.initIMClient = initIMClient;  
}

2、具体API说明

2.1、 exe窗口相关

client.startLogin 插件登录
  • minimize 是否在登录的时候最小化窗口
  • data 传入登录的参数 url必传
  • success 登录成功的回调通知
  • error 登录失败的回调通知
client.startLogin({
  minimize: true,
  data: {
    url: "https://pingan-test-video.easemob.com/doLogin?name=23160006&pwd=76160006&returnTo=",
  },
  success: function (data) {
    console.log(data, "登录成功回调");
  },
  error: function (err) {
    // 登录超时逻辑处理
    if (err && err.code == -1) {
      // 此时登录超时
      console.log("登录超时")
    }
  }
})
setWindowSize 调整exe窗口宽高
  • width 宽度
  • height 高度
client.setWindowSize({
  width: "300",
  height: "400"
});
minimize exe窗口最小化
client.minimize()
startup windows环境下拉起exe插件
client.startup({ clientUrl: "pocprotocol://" })
restore exe窗口还原
client.restore()
quit exe窗口退出
client.quit()

2.2、IM文本会话相关方法

pickUpSession 接起IM会话
  • session_id 会话id,必填
  • success IM接起成功
  • error IM接起失败
client.pickUpSession({
  session_id: serviceSessionId,
  success: function (data) {
    console.log("IM接起成功!", data);
  },
  error: function (data) {
    console.log("IM接起失败!", data);
  }
});
chatClose 挂断当前IM会话
client.chatClose()

2.3、 音视频相关方法

videoPickUp 主坐席接起音视频
  • session_id 必填 会话id
  • success 音视频接起会议创建成功的回调
  • visitorDisconnect 音视频接通后访客端引起的挂断
  • timeoutDisconnect 超时未接的回调
  • error 音视频接起失败的回调
client.videoPickUp({
  session_id: serviceSessionId,
  success: function (data) {
    console.log('video接起成功', data);
  },
  timeoutDisconnect: function(data) {
    console.log('访客超时未接听', data)
  },
  visitorDisconnect: function(data) {
    console.log('音视频接通后访客端引起的挂断', data)
  },
  kefuCloseVideoSuccess: function(data) {
    console.log('客服挂断音视频', data)
  },
  error: function(error) {
    console.log(error, 'videoPickUp err')
  }
});
multipleVideoPickUp ==被邀请==的三方坐席接起音视频
  • acceptSuccess 三方坐席接受当前视频成功
  • exitSuccess 三方坐席离开当前视频成功
  • error 三方坐席加入音视频出错
client.multipleVideoPickUp({
  acceptSuccess: function (data) {
    console.log('三方坐席接受当前视频成功', data);
  },
  exitSuccess: function (data) {
    console.log('三方坐席离开当前视频成功', data);
  },
  kefuCloseVideoSuccess: function(data) {
    console.log('客服挂断音视频', data)
  },
  error: function(error) {
    console.log('三方坐席加入音视频出错', error)
  }
});
videoInviteAgent 邀请三方坐席
  • agentName 必填 被邀请的三方坐席的name
  • inviteSuccess 三方坐席视频邀请发送成功
  • acceptSuccess 三方坐席接受视频成功
  • exitSuccess 三方坐席退出成功
  • error 邀请三方坐席失败
client.videoInviteAgent({
  agentName: 'XXXX',
  inviteSuccess: function (data) {
    console.log('三方坐席视频邀请发送成功', data);
  },
  acceptSuccess: function (data) {
    console.log('三方坐席接受视频成功', data)
  },
  exitSuccess: function (data) {
    console.log('三方坐席退出成功', data)
  },
  kefuCloseVideoSuccess: function(data) {
    console.log('客服挂断音视频', data)
  },
  error: function(data) {
    console.log(data, '邀请坐席失败')
  }
})
callbackToVisitor 外呼访客
  • visitorName 必填 访客name
  • inviteSuccess 外呼-访客邀请发送成功
  • acceptSuccess 外呼-访客接受邀请
  • visitorRefuse 外呼-访客拒接邀请
  • visitorDisconnect 外呼-访客挂断
  • videoBusyMark 外呼-访客忙线
  • timeoutDisconnect 外呼-访客超时未接听
  • kefuCloseVideoSuccess 外呼-客服挂断音视频
  • error 外呼-访客 出错,错误信息
client.callbackToVisitor({
  visitorName: 'XXXX',
  startVideo: true,
  inviteSuccess: function (data) {
    console.log(data, '外呼-访客邀请发送成功')
  },
  acceptSuccess: function (data) {
    console.log('外呼-访客接受邀请', data)
  },
  visitorRefuse: function (data) {
    console.log('外呼-访客拒接邀请', data)
  },
  visitorDisconnect: function (data) {
    console.log('外呼-访客挂断', data)
  },
  videoBusyMark: function (data) {
    console.log('外呼-访客忙线', data)
  },
  timeoutDisconnect: function (data) {
    console.log('外呼-访客超时未接听', data)
  },
  kefuCloseVideoSuccess: function(data) {
    console.log('客服挂断音视频', data)
  },
  error: function (error) {
    console.log('外呼-访客 出错', error)
    /*error: {
    code: "SDK_11",
    msg: "当前访客正在进行会话,无法外呼"
    }
    error: {
    code: "SDK_08",
    msg: "查询id出错,请检查访客信息是否正确"
    }*/
  }
});
videoInviteCurrentVisitor 邀请当前访客音视频

回调同外呼访客,参上

client.videoInviteCurrentVisitor({
  inviteSuccess: function (data) {
    console.log(data, '邀请当前-访客邀请发送成功')
  },
  acceptSuccess: function (data) {
    console.log('邀请当前-访客接受邀请', data)
  },
  visitorRefuse: function (data) {
    console.log('邀请当前-访客拒接邀请', data)
  },
  visitorDisconnect: function (data) {
    console.log('邀请当前-访客挂断', data)
  },
  videoBusyMark: function (data) {
    console.log('邀请当前-访客忙线', data)
  },
  timeoutDisconnect: function (data) {
    console.log('邀请当前-访客超时未接听', data)
  },
  kefuCloseVideoSuccess: function(data) {
    console.log('客服挂断音视频', data)
  },
  error: function (data) {
    console.log('邀请当前-访客 出错', data)
  }
});
videoInviteVisitor 邀请三方访客

回调同外呼访客,参上

client.videoInviteVisitor({
  visitorName: 'XXXX',
  inviteSuccess: function (data) {
    console.log(data, '邀请三方-访客邀请发送成功')
  },
  acceptSuccess: function (data) {
    console.log('邀请三方-访客接受邀请', data)
  },
  visitorRefuse: function (data) {
    console.log('邀请三方-访客拒接邀请', data)
  },
  visitorDisconnect: function (data) {
    console.log('邀请三方-访客挂断', data)
  },
  videoBusyMark: function (data) {
    console.log('邀请三方-访客忙线', data)
  },
  timeoutDisconnect: function (data) {
    console.log('邀请三方-访客超时未接听', data)
  },
  kefuCloseVideoSuccess: function(data) {
    console.log('客服挂断音视频', data)
  },
  error: function (data) {
    console.log('邀请三方-访客 出错', data)
     /*error: {
    code: "SDK_11",
    msg: "当前访客正在进行会话,无法外呼"
    }
    error: {
    code: "SDK_08",
    msg: "查询id出错,请检查访客信息是否正确"
    }*/
  }});
videoDisconnect 挂断音视频
client.videoDisconnect()

2.4、截图&拍照

// 拍照
client.takePhoto({
  success: function (data) {
        console.log(data, '拍照数据')
  },
  error: function(error) {
    console.log(error, '拍照失败')
     // 拍照不可用会返回如下消息 {"mark":"takePhoto","subMark":"error","error":{"type":"snapShotDisabled","msg":"snapShotDisabled"}}
  }
});

// 截图
client.snapshot({
  success: function (data) {
        console.log(data, '截图数据')
  },
  error: function(error) {
    console.log(error, '截图失败')
  }
});

2.5、 共享

inviteShare 邀请访客共享
  • open 访客共享屏幕打开了
  • close 访客共享屏幕关闭了
  • error 邀请访客共享屏幕失败
client.inviteShare({
  open: function (data) {
    console.log('共享屏幕邀请成功', data)
  },
  close: function (data) {
    console.log('访客共享屏幕关闭了', data)
  },
  error: function (error) {
    console.log('邀请访客共享屏幕失败')
  }
});

2.6、 其他

sessionCount 获取当前正在进行的会话的数量
client.sessionCount({
  success: function(data) {
    console.log(data.payload.sessionCount)
  }
})
sessionState 获取当前正在进行的会话的详情
client.sessionState({
  success: function(data) {
    console.log(data)
  }
})

isMultipleVideo

参数说明

  • success中的data.data为布尔值,true代表当前正在三方视频中,false代表当前不在三方视频中
client.isMultipleVideo({
  success: function(data) {
    console.log(data.data, '当前是否正在三方视频中')
  }
})

isShareState

参数说明

  • success中的data.data为布尔值,true代表当前正在共享中,false代表当前不在共享中
client.isShareState({
  success: function(data) {
    console.log(data.data, '当前是否在共享中')
  }
})

release说明

  • api的md文档提供 - 11.28

版本-v190307

发版说明:
1、整合brower端和app端sdk,采用状态机管理应用工作状态,
2、修改部分api的调用方式

状态机

const state = {
  currentState: '000000',
  //未迁入
  notLogin: '000000',
  //忙
  visitorInvite_timeout: '001001',
  agentInvite_timeout: '001002',
  //闲
  callVisitor_visitorRefuse:'002001',
  callVisitor_Timeout:'002002',
  callVisitor_busy:'002003',
  callVisitor_error:'002004',
  callVisitor_agentCloseVideo_notAnswer:'002005',
  callCurrentVisitor_visitorRefuse:'002006',
  callCurrentVisitor_timeout:'002007',
  callCurrentVisitor_busy:'002008',
  callCurrentVisitor_error:'002009',
  callCurrentVisitor_agentCloseVideo_notAnswer:'002010',
  visitorInvite_error: '002011',
  agentInvite_error: '002012',
  //外呼中
  callVisitor_inviteSendSuccess:'003001',
  callCurrentVisitor_inviteSendSuccess:'003002',
  //来电中
  //话后处理
  inviteThirdVisitor_masterAgentCloseVideo: '005001',
  inviteThirdAgent_masterAgentCloseVideo: '005002',
  callVisitor_visitorDisconnect:'005003',
  callVisitor_agentCloseVideo_answered:'005004',
  callCurrentVisitor_visitorDisconnect:'005005',
  callCurrentVisitor_agentCloseVideo_answered:'005006',
  visitorInvite_visitorDisconnect: '005007',
  visitorInvite_agentCloseVideo: '005008',
  agentInvite_visitorDisconnect: '005009',
  agentInvite_agentCloseVideo: '0050010',
  //两方通话中
  inviteThirdVisitor_visitorRefuse:'006001',
  inviteThirdVisitor_Timeout:'006002',
  inviteThirdVisitor_busy:'006003',
  inviteThirdVisitor_error:'006004',
  inviteThirdVisitor_visitorDisconnect:'006005',
  //inviteThirdAgent_visitorRefuse:'006006',
  //inviteThirdAgent_Timeout:'006007',
  //inviteThirdAgent_busy:'006008',
  inviteThirdAgent_error:'006009',
  inviteThirdAgent_visitorDisconnect:'006010',
  callVisitor_VisitorAcceptSuccess:'006011',
  callCurrentVisitor_VisitorAcceptSuccess:'006012',
  visitorInvite_Success: '006013',
  agentInvite_Success: '006014',
  //邀请中
  inviteThirdVisitor_inviteSendSuccess:'007001',
  inviteThirdAgent_inviteSendSuccess:'007002',
  //三方通话中
  inviteThirdVisitor_success:'008001',
  inviteThirdAgent_success:'008002',
}
000000未签入
001000忙
 001001 访客邀请-超时
 
 001002 坐席邀请-超时
002000闲
  002001 外呼访客-访客拒绝
  002002 外呼访客-访客超时
  002003 外呼访客-访客忙
  002004 外呼访客-访客错误
  002005 外呼访客-坐席挂断(未接通)
  
  002006 外呼当前访客-访客拒绝
  002007 外呼当前访客-访客超时
  002008 外呼当前访客-访客忙
  002009 外呼当前访客-访客错误
  0020010 外呼当前访客-坐席挂断(未接通)
  
  002011 访客邀请-错误
 
  002012 坐席邀请-错误
003000外呼中
  003001 外呼访客-邀请发送成功
  
  003002 外呼当前访客-邀请发送成功
004000来电中
005000话后处理
  005001 邀请三方访客-主坐席挂断
  
  005002 邀请三方坐席-主坐席挂断
  
  005003 外呼访客-访客挂断
  005004 外呼访客-坐席挂断(接通后)
  
  005005 外呼当前访客-访客挂断
  005006 外呼当前访客-坐席挂断(接通后)
  
  005007 访客邀请-访客挂断
  005008 访客邀请-坐席挂断
  
  005009 坐席邀请-访客挂断
  005010 坐席邀请-坐席挂断
006000两方通话中
  006001 邀请三方访客-访客拒绝
  006002 邀请三方访客-访客忙
  006003 邀请三方访客-访客超时
  006004 邀请三方访客-访客错误
  006005 邀请三方访客-访客挂断
  

006006 邀请三方坐席-坐席拒绝

  006007 邀请三方坐席-坐席忙

006008 邀请三方坐席-坐席超时

  006009 邀请三方坐席-坐席错误
  006010 邀请三方坐席-坐席挂断

  006011 外呼访客-访客接受视频成功
  
  006012 外呼当前访客-访客接受视频成功
  
  006013 访客邀请-成功
  
  006014 坐席邀请-成功  
007000邀请中
  007001 邀请三方访客-邀请发送成功
  
  007002 邀请三方坐席-邀请发送成功
008000三方通话中
  008001 邀请三方访客-访客接受视频成功
  
  008002 邀请三方坐席-坐席接受视频成功

相关api调用修改

1、相关api采用统一调用参数格式
2、参数为回调函数, para1: obj,
                para2: func(state, [payload])
videoInviteVisitor 邀请三方访客
client.videoInviteVisitor({
  visitorName: 'XXXX',
},function(state, payload){
 if (state = 006001){
   console.log('邀请三方访客-访客拒接邀请')
 } else if (state = 006002){
   console.log('邀请三方访客-访客忙线')
 } else if (state = 006003){
   console.log('邀请三方访客-访客超时')
 } else if (state = 006004){
   console.log('邀请三方访客-访客错误')
 } else if (state = 006005){
   console.log('邀请三方访客-访客挂断')
 } else if (state = 007001){
   console.log('邀请三方访客-邀请发送成功')
 } else if (state = 008001){
   console.log('邀请三方访客-访客接受视频成功')
 } else if (state = 005001){
   console.log('邀请三方访客-主坐席挂断')
 }
});
videoInviteAgent 邀请三方坐席
client.videoInviteAgent({
  agentName: 'XXXX'
},function(state, payload){
 if (state = 006006){
   console.log('邀请三方访客-访客拒接邀请')
 } else if (state = 006007){
   console.log('邀请三方访客-访客忙线')
 } else if (state = 006008){
   console.log('邀请三方访客-访客超时')
 } else if (state = 006009){
   console.log('邀请三方访客-访客错误')
 } else if (state = 0060010){
   console.log('邀请三方访客-访客挂断')
 } else if (state = 007002){
   console.log('邀请三方访客-邀请发送成功')
 } else if (state = 008002){
   console.log('邀请三方访客-访客接受视频成功')
 } else if (state = 005002){
   console.log('邀请三方访客-主坐席挂断')
 }
});
*注意:原始api只有邀请 错误、发送成功、接收成功、第三方坐席挂断(exitSuccess而非visitorDisconnect)住坐席挂断
callbackToVisitor 外呼访客
- visitorName **必填** 访客name
- inviteSuccess 外呼-访客邀请发送成功
- acceptSuccess 外呼-访客接受邀请
- visitorRefuse 外呼-访客拒接邀请
- visitorDisconnect 外呼-访客挂断
- videoBusyMark 外呼-访客忙线
- timeoutDisconnect 外呼-访客超时未接听
- kefuCloseVideoSuccess 外呼-客服挂断音视频
- error 外呼-访客 出错,错误信息
client.callbackToVisitor({
  visitorName: 'XXXX',
  startVideo: true,
  },function(state, payload){
     if (state = 002001){
       console.log('外呼访客-访客拒接邀请')
     } else if (state = 002002){
       console.log('外呼访客-访客超时')
     } else if (state = 002003){
       console.log('外呼访客-访客忙线')
     } else if (state = 002004){
       console.log('外呼访客-访客错误')
     } else if (state = 002005){
       console.log('外呼访客-坐席挂断(未接通)')
     } else if (state = 003001){
       console.log('外呼访客-邀请发送成功')
     } else if (state = 006011){
       console.log('外呼访客-访客接受视频成功')
     } else if (state = 005003){
       console.log('外呼访客-访客挂断')
     } else if (state = 005004){
       console.log('外呼访客-坐席挂断(已接通)')
     }
  }
});
videoInviteCurrentVisitor 邀请当前访客音视频
client.videoInviteCurrentVisitor(null, function(state, payload){
   if (state = 002006){
     console.log('外呼当前访客-访客拒接邀请')
   } else if (state = 002007){
     console.log('外呼当前访客-访客超时')
   } else if (state = 002008){
     console.log('外呼当前访客-访客忙线')
   } else if (state = 002009){
     console.log('外呼当前访客-访客错误')
   } else if (state = 0020010){
     console.log('外呼当前访客-坐席挂断(未接通)')
   } else if (state = 003002){
     console.log('外呼当前访客-邀请发送成功')
   } else if (state = 006012){
     console.log('外呼当前访客-访客接受视频成功')
   } else if (state = 005005){
     console.log('外呼当前访客-访客挂断')
   } else if (state = 005006){
     console.log('外呼当前访客-坐席挂断(已接通)')
   }
});
videoPickUp 主坐席接起音视频
  • session_id 必填 会话id
  • success 音视频接起会议创建成功的回调
  • visitorDisconnect 音视频接通后访客端引起的挂断
  • timeoutDisconnect 超时未接的回调
  • error 音视频接起失败的回调
client.videoPickUp({
  session_id: serviceSessionId,
}, function(state, payload){
   if (state = 001001){
     console.log(‘访客邀请-访客超时未接听')
   } else if (state = 002011){
     console.log('访客邀请-错误')
   } else if (state = 006013){
     console.log('访客邀请-成功')
   } else if (state = 005007){
     console.log('访客邀请-访客挂断(接通后)')
   } else if (state = 005008){
     console.log('访客邀请-坐席挂断(接通后)')
   }
});
multipleVideoPickUp ==被邀请==的三方坐席接起音视频
  • acceptSuccess 三方坐席接受当前视频成功
  • exitSuccess 三方坐席离开当前视频成功
  • error 三方坐席加入音视频出错
client.multipleVideoPickUp(null, function(state, payload){
   if (state = 001002){
     console.log('坐席邀请-访客超时未接听')
   } else if (state = 002011){
     console.log('坐席邀请-错误')
   }else if (state = 006014){
     console.log('坐席邀请邀请-成功')
   }  else if (state = 005009){
     console.log('坐席邀请-访客挂断(接通后)')
   } else if (state = 005010){
     console.log('坐席邀请-坐席挂断(接通后)')
   }
});

镰月
313 声望13 粉丝

它的优秀之处并非原创,它的原创之处并不优秀。


下一篇 »
笔记